const xml2js = require('xml2js')
/**
 * json对象转为xml
 * @param {JSON} obj
 */
function json2xml(obj) {
  var builder = new xml2js.Builder({ headless: true, cdata: true, renderOpts: { 'pretty': false }, rootName: 'Request' })
  var xml = builder.buildObject(obj)
  return xml
}
/**
 * xml转换为json对象，通过回调的形式返回
 * @param {string} xml
 * @param {function} callback
 */
function xml2json(xml) {
  // xml2js默认会把子子节点的值变为一个数组, explicitArray设置为false
  var parser = new xml2js.Parser({ explicitArray: false, ignoreAttrs: true })
  return new Promise(function(resolve, reject) {
    parser.parseString(xml, function(err, result) {
      if (err) {
        reject(err)
      }
      resolve(result)
    })
  })
}

/**
 * 如果参数是对象则返回数组，如果是数组直接返回
 * @param {Array | Object} object
 */
function object2Array(object) {
  let result = object
  if (!Array.isArray(object)) {
    result = []
    result.push(object)
  }
  return result
}

export default {
  json2xml,
  xml2json,
  object2Array
}
